package Banco.DAO;

import Banco.Classes.Aluno;
import Banco.Classes.InformacaoTurma;
import Banco.Classes.Turma;
import Banco.Conexao.conexaoPortal;
import java.sql.SQLException;
import Banco.Conexao.conexao3G;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;


public class alunoDAO {

    private conexaoPortal conectaPortal;
    private conexao3G conecta3g;
    private String nomeBD;
    private String celularBD;
    private String nivelAcesso;
    Aluno aluno = new Aluno();
/**
 * Construtor
 */
    public alunoDAO() {
        conectaPortal =conexaoPortal.getConexaoPortal();
        conecta3g = conexao3G.getConexao3G();
    }

//    public Aluno getAlunoLogin(String matricula, String login, String senha) throws SQLException {
//
//        //conectaPortal.conecta();
//
//        String SQL_getAlunoLoginPortal = "SELECT * FROM Aluno WHERE " +
//                "matricula LIKE '%" + matricula + "%'";
//
//        ResultSet rs=conectaPortal.executeSql(SQL_getAlunoLoginPortal);
//        rs.first();
//        nomeBD = rs.getString("nome");
//
//         //conectaPortal.desconecta();
//        //conecta3g.conecta();
//
//        String SQL_getAlunoLogin3g = "SELECT * FROM aluno WHERE " +
//                "Matricula LIKE '%" + matricula + "%'";
//
//       ResultSet rs3= conecta3g.executeSql(SQL_getAlunoLogin3g);
//        rs3.first();
//
//        celularBD = rs3.getString("Celular");
//        nivelAcesso = rs3.getString("nivelAcesso");
//
//        //conecta3g.desconecta();
//
//        aluno.setLogin(login);
//        aluno.setSenha(senha);
//        aluno.setMatricula(matricula);
//        aluno.setNome(nomeBD);
//        aluno.setCelular(celularBD);
//        //aluno.setNivelAcesso(nivelAcesso);
//
//        System.out.println("Login aluno: " + login);
//        System.out.println("Senha aluno: " + senha);
//        System.out.println("Matricula aluno: " + matricula);
//        System.out.println("Nome aluno: " + nomeBD);
//        System.out.println("Celular aluno: " + celularBD);
//        System.out.println("Nive de Acesso aluno: " + nivelAcesso);
//
//        return aluno;
//    }

    /**
     * Atualiza aluno no banco de dados.
     * @param aluno - Aluno
     * @param matriculaID - Matricula
     * @return true se o update ocorreu normalmente e false caso algum erro ocorra
     */
    public boolean updateAluno(Aluno aluno, String matriculaID) {
    boolean retorno = false;
        String celular = aluno.getCelular();

        //conecta3g.conecta();
        String tabela = "aluno";

        conecta3g.execute("UPDATE " + tabela + " SET celular = '" + celular + "'WHERE matricula = '" + matriculaID + "'");
        retorno = true;
        //conecta3g.desconecta();
        return retorno;
    }
    /**
     * Recupera aluno.
     * @param matricula - Matricula do aluno
     * @return Aluno recuperado
     */

    public Aluno getAluno(String matricula) {
        //conectaPortal.conecta();
        Aluno aluno = new Aluno();

        String tabela = "aluno";
        String cadastro = "cadastro";
        //conecta3g.conecta();
        //Procura no BD 3g

        String SQL_getAluno3G = "SELECT * FROM " + tabela + " WHERE matricula = '" + matricula + "'";
       ResultSet rs3= conecta3g.executeSql(SQL_getAluno3G);
        try {

            while (rs3.next()) {
                //Cria objeto Aluno dados 3g
                aluno.setCelular(rs3.getString("celular"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(alunoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        //conecta3g.desconecta();

        //Procura no BD portal


        String SQL_getAluno = "SELECT matricula, nome FROM " + tabela + " WHERE matricula = '" + matricula + "'";
        String SQL_getAluno2 = "SELECT login, senha FROM " + cadastro + " WHERE matricula = '" + matricula + "'";

        ResultSet rs=conectaPortal.executeSql(SQL_getAluno);
        try {

            while (rs.next()) {
                //Cria objeto Aluno dados portal
                aluno.setMatricula(rs.getString("matricula"));
                aluno.setNome(rs.getString("nome"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(alunoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
         rs=conectaPortal.executeSql(SQL_getAluno2);
        try {

            while (rs.next()) {
                //Cria objeto Aluno dados portal
                aluno.setLogin(rs.getString("login"));
                aluno.setSenha(rs.getString("senha"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(alunoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
         //conectaPortal.desconecta();

        return aluno;
    }

    /**
     * Recupera todas as informações turmas do aluno
     * @param matricula - Matricula do aluno
     * @return Lista de todas as informações turmas
     */
    private ArrayList<InformacaoTurma> getTodasInfoTurmas(String matricula) {
        ArrayList<InformacaoTurma> lista = new ArrayList();
        //conectaPortal.conecta();

        String tabela = "informacaoturma";

        //Procura no BD 3g

        String SQL_getTodasTurmas = "SELECT * FROM " + tabela + " WHERE aluno_matricula = '" + matricula + "'";

        ResultSet rs=conectaPortal.executeSql(SQL_getTodasTurmas);
        try {

            while (rs.next()) {
                InformacaoTurma infoTurma = new InformacaoTurma();
                infoTurma.setTurma_cursoFK(rs.getString("turma_curso"));
                infoTurma.setTurma_disciplinaFK(rs.getString("turma_disciplina"));
                infoTurma.setTurma_periodoFK(rs.getString("turma_periodo"));
                infoTurma.setTurma_turmaFK(rs.getString("turma_turma"));
                lista.add(infoTurma);
            }
        } catch (SQLException ex) {
            Logger.getLogger(alunoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
         //conectaPortal.desconecta();

        return lista;
    }

    /**
     * Recupera todas as turmas que o aluno está matriculado.
     * @param matricula - Matricula do aluno
     * @return Lista de todas as turmas
     */
    public ArrayList<Turma> getTodasTurmas(String matricula) {
        ArrayList<Turma> listaTurmas = new ArrayList();
        ArrayList<InformacaoTurma> listaInfos = getTodasInfoTurmas(matricula);
        int i = 0;
        turmaDAO turmDAO = new turmaDAO();
        while (i < listaInfos.size()) {
            //Pega infoTurma da lista
            InformacaoTurma infTurm = listaInfos.get(i);


            //Busca turma com chaves da infoTurma
            Turma turm = turmDAO.getTurma(infTurm.getTurma_periodoFK(), infTurm.getTurma_cursoFK(), infTurm.getTurma_turmaFK(), infTurm.getTurma_disciplinaFK());
            //adiciona a turma na lista de turmas

            listaTurmas.add(turm);
            i = i + 1;
        }

        return listaTurmas;
    }
}
